# Esta clase controla los usuarios que utilizan el sistema.  
class UsersController < ApplicationController

	before_filter :ensure_adm,:only => [:index,:new,:edit,:delete]

# Prepara la pantalla de bienvenida de un usuario al loguearse al sistema.
# Muestras las cuentas asignadas, los últimos movimientos y las últimas novedades cargadas.
	def welcome
		@user = User.find(params[:user_id])
		@comunicaciones = Comunicacion.find(:all,:order => 'fecha DESC',:limit => 3 , :conditions => ['user_id = ? and ( type = "Venta" or type = "Reunion" or type = "Movimiento" )',params[:user_id]])
		@cuentas = Cuenta.search_asignadas(params[:search],params[:cuentas_page],params[:user_id])
		@noticias = Noticia.find(:all,:order => 'fecha DESC',:limit => 3)
		respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
	end

# Prepara el nuevo usuario que va a ser posteriormente creado.
  def new
    @user = User.new
    
    respond_to do |format|
      format.html 
      format.xml  { render :xml => @user }
    end

  end

# Crea el nuevo usuario.
  def create
    cookies.delete :auth_token
    # protects against session fixation attacks, wreaks havoc with 
    # request forgery protection.
    # uncomment at your own risk
    # reset_session
    @user = User.new(params[:user])
    @user.save
    if @user.errors.empty?
    #  self.current_user = @user
      redirect_back_or_default('/users')
    #  flash[:notice] = "Thanks for signing up!"
    else        	
      render :action => 'new'
    end
  end

# Actualiza el usuario.
  def update
    @user = User.find(params[:id])
    respond_to do |format|
      if @user.update_attributes(params[:user])
        flash[:notice] = 'User was updated.'
        format.html { redirect_to(users_path) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
      end
    end
  end

# Recupera el usuario que va a ser mostrado en pantalla.
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
  end


# Recupera el usuario que va a ser editado.
  def edit
    @user = User.find(params[:id])
  end

# Recupera todos los usuarios.
  def index
    
    role_user_id = params[:role_user_id]
	  if role_user_id.to_i != 0 then
    	@user = User.search_role(params[:search],params[:page],params[:role_user_id])
    else
    	@user = User.search_all(params[:search],params[:page])
    end
        
		respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @user }
    end
  end

  
# Elimina el usuario.
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to(users_path) }
      format.xml  { head :ok }
    end
  end
  
end
